package com.tang.design.observor;

import java.util.ArrayList;
import java.util.List;

/**
 * @author tmh
 * @date 2024/5/26 21:47
 * @description 被观察者 里面会维护观察者列表 以及新增 删除 通知观察者的方法
 */
public class Subject {

    private List<Observer> observerList=new ArrayList<Observer>();

    private int state;

    /**
     * 被观察者状态更新的时候就要通知观察者-调用notifyObservers方法
     * @param state
     */
    protected void setState(int state){
        this.state=state;
        notifyObservers();
    }

    protected int getState(){
        return this.state;
    }

    public void add(Observer observer){
        this.observerList.add(observer);
    }

    public void delete(Observer observer){
        observerList.remove(observer);
    }

    //通知观察者
    public void notifyObservers(){
        for (Observer observer : observerList) {
                observer.print();
        }
    }

}
